package com.mfangsoft.zhuangjialong.integration.usermanage.service;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.mfangsoft.zhuangjialong.common.model.Page;
import com.mfangsoft.zhuangjialong.integration.activity.model.BaseActivityInfo;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.BaseUserManage;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.BaseUserManagerModel;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.CustomerUserManagerBasic;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.CustomerUserManagerCommunicate;
//import com.mfangsoft.zhuangjialong.integration.usermanage.model.CustomerCommunicateEntity;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.SellerPointEntity;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.UserCustomerReportEntity;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.UserManagerDept;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.UserManagerTask;
import com.mfangsoft.zhuangjialong.integration.usermanage.model.UserManagerTaskModel;

public interface UserManageService {
	

	void addUserManage(BaseUserManage baseUserManage);

	Page<Map<String,Object>> selectUserManagePage(Page<Map<String,Object>> page);

	BaseUserManagerModel selectUserManageOne(int id);

	void updateUserManageOne(BaseUserManage baseUserManage);

	Page<SellerPointEntity> selectIntegralsByUserManagerId(Page<SellerPointEntity> page);

	Page<UserCustomerReportEntity> selectCustomerReportByUserManagerId(Page<UserCustomerReportEntity> page);

	/**
	 * 根据导购id以及消费者id查询导购和消费者的沟通记录
	 * @param page
	 * @return
	 */
	CustomerUserManagerCommunicate selectRelatedCustomerCommunicateForPage(Map<String,Object> map);

	/**
	 * 根据所属地区查看当前登陆用户下所有的一级店铺
	 * @param code
	 * @return
	 */
	Map<String, Object> selectStairShopsByUid(String code);

	/**
	 * 人员类型的新增
	 * @param userManagerDept
	 */
	void addUserManageDept(UserManagerDept userManagerDept);

	/**
	 * 人员类型的修改
	 * @param userManagerDept
	 */
	void updateUserManageDept(UserManagerDept userManagerDept);

	/**
	 * 查看人员类型列表
	 * @return
	 */
	List<UserManagerDept> selectUserManageDepts();

	/**
	 * 根据店铺id获取店铺的活动列表
	 * @return
	 */
	List<BaseActivityInfo> getActivitys(Integer num);

	/**
	 * 为人员设置任务
	 * @param userManagerTask
	 */
	void addUerManagerTask(UserManagerTask userManagerTask);

	/**
	 * 人员任务的设置
	 * @param map
	 */
	void addUerManagerTaskBatch(Map<String, Object> map) throws Exception;

	/**
	 * 人员的任务查看
	 * @param page
	 * @return
	 */
	Page<UserManagerTaskModel> selectUerManagerTask(Page<UserManagerTaskModel> page);

	/**
	 * 人员的任务详情
	 * @param task_id
	 * @return
	 */
	UserManagerTaskModel selectUerManagerTaskDetails(Long task_id,Long userManager_id);

	/**
	 * 人员任务的编辑
	 * @param userManagerTask
	 */
	void updateUerManagerTask(UserManagerTask userManagerTask);

	/**
	 * 人员的工作台当前任务
	 * @param page
	 * @return
	 */
	Page<UserManagerTaskModel> selectPresentUerManagerTask(Page<UserManagerTaskModel> page);

	/**
	 * 沟通记录的增加
	 * @param customerCommunicateEntity
	 */
	void addCommunicate(CustomerUserManagerCommunicate customerCommunicateEntity);


	/**
	 * 客户报备新增
	 * @param userCustomerReportEntity
	 * @return
	 */
	void addCustomerReport(UserCustomerReportEntity userCustomerReportEntity);

	/**
	 * 小程序的专属顾问
	 * @param map
	 * @return
	 */
	BaseUserManage selectExclusiveConsultant(Map<String, Object> map);

	/**
	 * 查看当前店铺除了当前导购的所有导购
	 * @param map
	 * @return
	 */
	List<BaseUserManage> selectAllUserManager(Map<String, Object> map);

	/**
	 * 导购的推广积分增加
	 * @param sellerPointEntity
	 */
	void addIntegralsByUserManagerId(SellerPointEntity sellerPointEntity);

	/**
	 * 为消费者分配店员
	 * @param map
	 */
	void updateCustomerUserManager(Map<String, Object> map);

	/**
	 * 批量为消费者分配店员
	 * @param map
	 */
	void updateCustomerUserManagerBath(Map<String, Object> map);

	/**
	 * 根据商户id和消费者id查看沟通记录
	 * @param map
	 * @return
	 */
	List<CustomerUserManagerBasic> selectRecordOfCommunication(Map<String, Object> map);

	/**
	 * 根据导购id和消费者id查看沟通记录基本信息回显
	 * @param customerCommunicateEntity
	 * @return
	 */
	CustomerUserManagerCommunicate selectCommunicate(CustomerUserManagerCommunicate customerCommunicateEntity);

	/**
	 * 根据活动id查看活动推广时间开始和活动结束时间
	 * @param activity_id
	 * @return
	 */
	BaseActivityInfo selectActivityTime(Integer activity_id);

	void updateUserManagePwd(BaseUserManage baseUserManage);

	/**
	 * 根据人员的账号查看账号是否已经使用
	 * @param user_name
	 * @return
	 */
	BaseUserManage selectUserManageName(String user_name);
	
	/**
	 * 导购增加积分
	 * @param seller_id    导购id     Long
	 * @param type_index    积分类型1.分享2.订单3.邀请4.登录5.沟通    Integer
	 * @param type_name     String
	 * @param point    积分数量     Integers
	 * @param title       如果积分类型是1，title就是活动名称，积分类型是2，title就是订单号，积分类型是3，title就是"邀请积分"写死           String
	 */
	void addIntegral(SellerPointEntity sellerPointEntity);

	/**
	 * 根据导购id查看导购的总积分
	 * @param userManagerId
	 * @return
	 */
	Integer selectUserManagerIntegral(Long userManagerId);

	/**
	 * 导购的积分管理列表
	 * @param page
	 * @return
	 */
	Page<SellerPointEntity> selectUserManagerIntegralManagement(Page<SellerPointEntity> page);

	/**
	 * 导购的批量设置任务的提示框
	 * @param map
	 * @return
	 */
	Map<String, Object> selectUerManagerTaskHint(Map<String, Object> map);

	/**
	 * 人员任务设置的活动列表
	 * @param page
	 * @return
	 */
	Page<Map<String, Object>> selectUserActivity(Page<Map<String, Object>> page);

	/**
	 * 人员任务设置的树状结构
	 * @param map
	 * @return
	 */
	List<Map<String, Object>> selectUserManagerTaskTree(Map<String, Object> map);


	/**
	 * 人员设置任务的任务列表
	 * @param map
	 * @return
	 */
	Page<Map<String, Object>> selectUserManagerActivityTaskList(Page<Map<String, Object>> page);

	/**
	 * 人员设置任务的任务列表的查看详情
	 * @param activityTaskId
	 * @return
	 */
	Map<String, Object> selectUserManagerActivityTaskDetails(Long activityTaskId);

	/**
	 * 人员设置任务的任务列表的编辑
	 * @param map
	 * @return
	 */
	void updateUserManagerActivityTask(Map<String, Object> map) throws Exception;

	/**
	 * 人员设置任务的任务列表的编辑回显
	 * @param activityTaskId
	 * @return
	 */
	Map<String, Object> selectUserManagerActivityTaskEcho(Long activityTaskId);

	/**
	 * 判断导购助手端是否签到
	 * @param userManagerId
	 * @return
	 * @throws Exception 
	 */
	Boolean selectUserManagerIsSing(Long userManagerId) throws Exception;

	/**
	 * 导购的签到积分增加
	 * @param userManagerId
	 * @throws Exception 
	 */
	String addUserManagerIsSing(Long userManagerId);
	
}



